home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 726-750 / 737 / ansi / ansi.doc < prev    next >
Text File  |  1995-03-18  |  4KB  |  116 lines

  1.    ANSI V1.6
  2.    =========
  3.    
  4.    Dr. Andrew C. R. Martin
  5.    SciTech Software
  6.    
  7.    This program is not in the public domain, but it may be freely copied
  8.    and distributed for no charge providing this header is included.
  9.    The code may be modified as required, but any modifications must be
  10.    documented so that the person responsible can be identified. If someone
  11.    else breaks this code, I don't want to be blamed for code that does not
  12.    work! The code may not be sold commercially without prior permission from
  13.    the author, although it may be given away free with commercial products,
  14.    providing it is made clear that this program is free and that the source
  15.    code is provided with the program.
  16.  
  17. ****************************************************************************
  18.  
  19.    Description
  20.    ===========
  21.  
  22.    This program alters function definitions to convert non-ANSI C code to 
  23.    ANSI form. The -k and -p flags allow conversion from ANSI to K&R and
  24.    generation of prototypes respectively.
  25.    
  26.    There are four minor problems:
  27.    1. In generation of prototypes. If a function has been defined with no 
  28.    explicit type it defaults to being int. Strictly the prototype should 
  29.    explicitly state this is int, but doesn't.
  30.    2. If a conversion actually occurs (either to or from ANSI) any comments
  31.    which were in the definition will be lost.
  32.    3. If a function is defined as taking no parameters, for example:
  33.       void func()
  34.       {
  35.       ...
  36.       }
  37.    the prototype ouput by ansi is 
  38.       void func();
  39.    instead of 
  40.       void func(void);
  41.    4. It won't cope with ANSI variable list arguments i.e.
  42.       void func(char *fmt, ...)
  43.       {
  44.       ...
  45.       }
  46.    
  47.    Sometime, I hope to get around to fixing at least some of these!
  48.    
  49.    The only restriction (that I can think of!) on the code being processed
  50.    is that a function definition must be the first thing on a line.
  51.    i.e. if a comment is placed on the same line as the definition but before
  52.    it, the program will think the whole line is a comment.
  53.    
  54.    My thanks to B. de Batz who pointed out some of these problems and a
  55.    few special case bugs in the earlier versions and to Bob Bruccoleri
  56.    who found another small bug.
  57.    
  58. ****************************************************************************
  59.  
  60.    Usage:
  61.    ======
  62.    
  63.    The program may only be used from the CLI:
  64.  
  65.    ansi [-k -p] <in.c> <out.c>
  66.          -k generates K&R form code from ANSI
  67.          -p generates a set of prototypes
  68.  
  69. ****************************************************************************
  70.  
  71.    Revision History:
  72.    =================
  73.    
  74.    V1.0  17.12.91
  75.    Added support for prototype and K&R code generation. Also reorganised 
  76.    some code.
  77.    
  78.    V1.1  21.01.92
  79.    A little tidying for VAX and slightly more useful error messages when
  80.    making ANSI and failing to find parameter definition---this spots bugs!
  81.    
  82.    V1.2  14.02.92
  83.    Fixed a bug whereby variable names which were subsets of the associated
  84.    type were not being found correctly.
  85.    e.g. func(o,w) struct obs *o; struct wor *w; { }
  86.    did not inherit *'s correctly in the ANSI version.
  87.    Introduced FindVarName() for this purpose.
  88.    
  89.    Also added version string.
  90.    
  91.    V1.3  19.02.92
  92.    Fixed a reported bug where comments weren't handled properly in 
  93.    definitions of multiple parameters of a single type. e.g. the following
  94.    failed:
  95.    func(p1,p2)
  96.    char *p1, /* Comment 1 */
  97.         *p2  /* Comment 2 */
  98.    {
  99.    }
  100.    Introduced KillComments() for this purpose.
  101.    
  102.    V1.4  18.03.92
  103.    Fixed bug reported by Bob Bruccoleri in process_file(). If a comment
  104.    on the line of an external variable definition contained a (, the code
  105.    would think this was a prototype definition and get very confused.
  106.    Now kills the comments before testing for the presence of a (.
  107.    Improved function definition comments.
  108.    
  109.    V1.5  26.03.92
  110.    Fixed same bug as in V1.2, but for ANSI-->K&R; variable names, if a
  111.    subset of a type name were getting picked up incorrectly.
  112.    
  113.    V1.6  01.04.92
  114.    Small change to comments to work with my autodoc program.
  115.    
  116.